<!DOCTYPE html>
<html lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>GCC 3.0 Caveats</title>
<link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" />
</head>

<body>
<h1>GCC 3.0 Caveats</h1>

<ul>
  <li><code>-fstrict-aliasing</code> is now part of <code>-O2</code>
  and higher optimization levels.  This allows the compiler to assume
  the strictest aliasing rules applicable to the language being
  compiled.  For C and C++, this activates optimizations based on the
  type of expressions.  This optimization may thus break old,
  non-compliant code.</li>

  <li>Enumerations are now properly promoted to <code>int</code> in
  function parameters and function returns.  Normally this change is
  not visible, but when using <code>-fshort-enums</code> this is an
  ABI change.</li>

  <li>The undocumented extension that allowed C programs to have a
  label at the end of a compound statement has been deprecated and may
  be removed in a future version.  Programs that now generate a
  warning about this may be fixed by adding a null statement (a single
  semicolon) after the label.</li>

  <li>The poorly documented extension that allowed string constants in
  C, C++ and Objective C to contain unescaped newlines has been
  deprecated and may be removed in a future version.  Programs using
  this extension may be fixed in several ways: the bare newline may be
  replaced by <code>\n</code>, or preceded by <code>\n\</code>, or
  string concatenation may be used with the bare newline preceded by
  <code>\n"</code> and <code>"</code> placed at the start of the next
  line.</li>

  <li>The Chill compiler is not included in GCC 3.0, because of the
  lack of a volunteer to convert it to use garbage collection.</li>

  <li>Certain non-standard iostream methods from earlier versions of
  libstdc++ are not included in libstdc++ v3, i.e.  filebuf::attach,
  ostream::form, and istream::gets.</li>

  <li>The new C++ ABI is not yet fully supported by current (as of
  2001-07-01) releases and development versions of GDB, or any earlier
  versions.  There is a problem setting breakpoints by line number, and
  other related issues that have been fixed in GCC 3.0 but not yet handled
  in GDB:
  <a href="https://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html">https://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html</a></li>
</ul>

</body>
</html>
